import { Module } from '@nestjs/common';
import { WinstonModule } from 'nest-winston';
import { ConfigService } from '@nestjs/config';
import {
  consoleTransports,
  createDailyRotateTransport,
} from './createDailyRotateTransport';
// ConfigModule 负责加载和提供配置功能
//onfigService 负责从配置中获取具体的配置信息

@Module({
  imports: [
    // 日志模块  forRootAsync 异步加载配置
    // WinstonModule.forRootAsync 是一种用于异步配置 Winston 模块的方法，这使得在应用启动时可以动态地加载配置
    WinstonModule.forRootAsync({
      //  inject 注入依赖
      inject: [ConfigService],
      // useFactory 使用工厂函数来创建配置
      useFactory: (configService: ConfigService) => {
        const logOn = configService.get('LOG_ON') === 'true';
        console.log(configService.get('LOG_ON'), 'LOG_ON');
        return {
          transports: [
            consoleTransports,
            ...(logOn
              ? [
                  createDailyRotateTransport('info', 'application'),
                  createDailyRotateTransport('warn', 'error'),
                ]
              : []),
          ],
        };
      },
    }),
  ],
})
export class LogsModule {

}
